// import { Prefab, SpriteFrame ,Node} from "cc";
// import Singleton from "../Base/Singleton";
// import { IActorMove, IBullet, IClientInput, IState } from "../Common";
// import { EntityType, InputTypeEnum } from "../Common/Enum";
// import { ActorManager } from "../Entity/Actor/ActorManager";
// import { JoyStickManager } from "../UI/JoyStickManager";
// import { BulletManager } from "../Entity/Bullet/BulletManager";
// import EventManager from "./EventManager";
// import { EventEnum } from "../Enum";


// const ACTOR_SPEED = 100
// const Bullet_SPEED = 500

// const MAP_WIDTH = 960;
// const MAP_HEIGHT = 640;

// const ACTOR_RADIUS = 50;
// const BULLET_RADIUS = 10;

// const WEAPON_DAMAGE = 10;

// export default class DataManager extends Singleton {
//     static get Instance() {
//         return super.GetInstance<DataManager>();
//     }

//     jm:JoyStickManager
//     stage: Node
//     prefabMap: Map<string, Prefab> = new Map();
//     textureMap: Map<string, SpriteFrame[]> = new Map();
//     actorMap: Map<number, ActorManager> = new Map();
//     bulletMap: Map<number, BulletManager> = new Map();
//     myPlayerId: number =1

//     state: IState = {
//         actors: [
//           {
//             id: 1,
//             nickname: "哈哈1",
//             position: {
//               x: -200,
//               y: -200,
//             },
//             direction: {
//               x: 1,
//               y: 0,
//             },
//             hp: 100,
//             type: EntityType.Actor1,
//             weaponType: EntityType.Weapon1,
//             bulletType: EntityType.Bullet2,
//           },
//           {
//             id: 2,
//             nickname: "哈哈2",
//             position: {
//               x: 200,
//               y: 200,
//             },
//             direction: {
//               x: -1,
//               y: 0,
//             },
//             hp: 100,
//             type: EntityType.Actor2,
//             weaponType: EntityType.Weapon1,
//             bulletType: EntityType.Bullet2,
//           },
//         ],
//         bullets: [],
//         nextBulletId: 1,
//     }

    

//     applyInput(input: IClientInput) {
//         switch (input.type) {
//             case InputTypeEnum.ActorMove:{
//                 const { id, direction:{x,y}, dt } = input
        
//                 const actor = this.state.actors.find(actor=>actor.id === id)
//                 actor.direction.x = x
//                 actor.direction.y = y
//                 actor.position.x += x * dt * ACTOR_SPEED
//                 actor.position.y += y * dt * ACTOR_SPEED
//                 break
//             }

//             case InputTypeEnum.WeaponShoot:{
//                 const { owner, direction, position } = input
//                 const bullet: IBullet = {
//                     id: this.state.nextBulletId++,
//                     owner,
//                     type: this.state.actors.find(actor=>actor.id === owner).bulletType,
//                     position,
//                     direction,
//             }
//                 // 当有武器射击input时，改变武器状态
//                 EventManager.Instance.emit(EventEnum.BulletBorn, owner)
//                 this.state.bullets.push(bullet)
//                 break
//             }   

//             case InputTypeEnum.TimePast:{
//                 const { dt } = input
//                 const { bullets, actors } = this.state

//                 for (let i = bullets.length - 1; i >= 0; i--) {
//                     const bullet = bullets[i];
//                     for (let j = actors.length - 1; j >= 0; j--) {
//                       const actor = actors[j];
//                       if ((actor.position.x - bullet.position.x) ** 2 + (actor.position.y - bullet.position.y) ** 2 < (ACTOR_RADIUS + BULLET_RADIUS) ** 2) {
//                         EventManager.Instance.emit(EventEnum.ExplosionBorn, bullet.id, {
//                           x: (actor.position.x + bullet.position.x) / 2,
//                           y: (actor.position.y + bullet.position.y) / 2,
//                         });
          
//                         actor.hp -= WEAPON_DAMAGE;
//                         bullets.splice(i, 1);
//                         break
//                       }
//                     }
//                     if (Math.abs(bullet.position.x) > MAP_WIDTH / 2 || Math.abs(bullet.position.y) > MAP_HEIGHT / 2) {
//                       EventManager.Instance.emit(EventEnum.ExplosionBorn, bullet.id, {
//                         x: bullet.position.x,
//                         y: bullet.position.y,
//                       });
//                       bullets.splice(i, 1);
//                       break
//                     }
//                   }



//                 for (const bullet of bullets){
//                     bullet.position.x += bullet.direction.x * dt * Bullet_SPEED
//                     bullet.position.y += bullet.direction.y * dt * Bullet_SPEED
//                 }


                
//                 break
//             }

//         }


//     }










// }
